/**
 * 
 */
package No301_400.No321_330.PowerofThree_326;

/** 
 * @author  作者 E-mail: ttljtw@qq.com
 * @date 创建时间：2017年2月27日 下午7:12:52 
 * @version 1.0 
 * @parameter  
 * @since  
 * @return  
 */
/**
 * @author 李敬
 * 
 */
public class Solution {

	/**
	 * 那么有一个投机取巧的方法，由于输入是int，正数范围是0-2^31，
	 * 在此范围中允许的最大的3的次方数为3^19=1162261467，那么我们只要看这个数能否被n整除即可
	 * 
	 **/
	public boolean isPowerOfThree(int n) {
		return (n > 0 && 1162261467 % n == 0);
	}

	/**
	 * 利用对数的换底公式来做，高中学过的换底公式为logab = logcb / logca，那么如果n是3的倍数，则log3n一定是整数，
	 * 我们利用换底公式可以写为log3n = log10n / log103，注意这里一定要用10为底数，不能用自然数或者2为底数，
	 * 否则当n=243时会出错，原因请看这个帖子。现在问题就变成了判断log10n / log103是否为整数，
	 * 在c++中判断数字a是否为整数，我们可以用 a - int(a) == 0 来判断，
	 * 
	 **/

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

	}

}
